package com.huidao.service;

import java.util.List;
import java.util.Scanner;
import com.huidao.data.FoodDb;
import com.huidao.domain.Food;
import com.huidao.domain.FoodCategory;

/**
 * 菜品的操作逻辑
 * @author Administrator
 *
 */
public class FoodService extends FoodAndMealSetService{
	private static List<Food> foodList  = FoodDb.getFoodList();
	private static Scanner sc = new Scanner(System.in);
	
	/**查找菜品*/
	public Food check(String foodName){
		
		//判断输入菜品名称的合法性
		if(foodName==null){
			System.out.println("输入错误，请重新输入");
			System.out.println("请输入需查找菜品的名称：");
			String newFoodName = sc.next();
			check(newFoodName);
			return null;
		}
		//对所有的菜品遍历，查找到后返回该菜品对象
		for (Food food : foodList) {
			if (foodName.equals(food.getName())) {
				System.out.println("该菜品已找到");
				return food;
			}
		}
		System.out.println("没有该菜品");
		return null;
	}
	/**增加菜品*/
	public boolean add(){
		System.out.println("请输入需增加菜品的名称：");
		String foodName = sc.next();
		//判断输入菜品名称的合法性
		if(foodName==null){
			System.out.println("输入错误，请重新输入");
			add();
			return false;
		}
		
		//对所有的菜品遍历
		for (Food food : foodList) {
			//查找是否存在该菜品
			if (foodName.equals(food.getName())) {
				System.out.println("该菜品已有，无法添加");
				add();
				return false;
			}
		}
		System.out.println("请输入该菜品的编号");
		String  foodId = sc.next();
		for (Food food : foodList) {
			if (foodId.equals(food.getFoodId())) {
				System.out.println("该Id已存在，请重新输入");
				add();
				return false;
			}	
		}
		System.out.println("请输入该菜品的类型名称");
		String categoryName = sc.next();
		System.out.println("请输入该菜品的类型分类Id");
		String  categoryId = sc.next();
		System.out.println("请输入该菜品的普通价格");
		double foodPrice = sc.nextDouble();
		System.out.println("请输入该菜品的会员价格");
		double vipPricePrice = sc.nextDouble();
		//将添加的菜品实例化
		Food newFood = new Food( foodId ,foodName,new FoodCategory(categoryId,categoryName),foodPrice,vipPricePrice);
		//添加菜品
		foodList.add(newFood);
		System.out.println("添加菜品成功，若要继续添加请输入1，不添加请输入0");
		if (sc.nextInt()==1) {
			add();
		}
		return true ; 
	}
	/**删除菜品*/
	public boolean del(){
		System.out.println("请输入需删除菜品的名称：");
		String foodName = sc.next();
		//判断输入菜品名称的合法性
		if(foodName==null){
			System.out.println("输入错误，请重新输入");
			del();
			return false;
		}
		//调用查找方法，将返回值赋值给新实例对象
		Food f = check(foodName);
		//调用查找方法，将返回值赋值给新实例对象
		if (f==null) {
			System.out.println("若要重新输入，请输入1");
			if (sc.nextInt()==1) {
				del();
			}
			return false;
		}
		//删除该菜品
		foodList.remove(f);
		System.out.println("删除菜品成功，若要继续删除请输入1，不添加请输入0");
		if (sc.nextInt()==1) {
			del();
		}
		return true ;
	}
	/**修改菜品的价格*/
	public boolean change(){
		System.out.println("请输入需修改菜品的名称：");
		String foodName = sc.next();
		//判断输入菜品名称的合法性
		if(foodName==null){
			System.out.println("输入错误，请重新输入");
			 change();
			return false;
		}
		//调用查找方法，将返回值赋值给新实例对象
		Food f = check(foodName);
		//调用查找方法，将返回值赋值给新实例对象
		if (f==null) {
			System.out.println("该菜品没找，请重新输入");
			check(foodName);
			return false;
		}
		//设置修改后的价格
		System.out.println("请输入该菜品修改后的普通价格");
		double foodPrice = sc.nextDouble();
		System.out.println("请输入该菜品修改后的会员价格");
		double vipPricePrice = sc.nextDouble();
		f.setPrice(foodPrice);
		f.setVipPrice(vipPricePrice);
		System.out.println("修改菜品成功，若要继续修改请输入1，返回请输入0");
		if (sc.nextInt() ==1) {
			change();
		}
		return true ;
	}
}
